package easy

import (
	"math"
	"strings"
)

/*
时间复杂度:O(N)
空间复杂度:O(1)

解1: 先找到右边界,然后每左移一次就ans++
*/

func lengthOfLastWord(s string) int {
	ans, i := 0, len(s)-1
	for i >= 0 && s[i] == ' ' {
		i--
	}
	for i >= 0 && s[i] != ' ' {
		ans++
		i--
	}
	return ans
}


/*
时间复杂度:O(N)
空间复杂度:O(1)

解2: 找到左右边界
*/
func lengthOfLastWord1(s string) int {
	l, r := math.MaxInt32, math.MaxInt32
	for i := len(s)-1; i >= 0; i-- {
		if r == math.MaxInt32 && s[i] != ' ' {
			r = i
		}
		if r != math.MaxInt32 && (s[i] == ' ' || i == 0) {
			l = i
			break
		}
	}
	if s[l] == ' ' {
		l++
	}
	return r-l+1
}

/*
时间复杂度:O(N)
空间复杂度:O(1)

解3: 标准库
*/
func lengthOfLastWord2(s string) int {
	s = strings.Trim(s, " ")
	sArr := strings.Split(s, " ")
	return len(sArr[len(sArr)-1])
}